home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 January: Mac OS SDK / Dev.CD Jan 97 SDK2.toast / Development Kits (Disc 2) / OpenDoc Development Framework / ODFDev / ODF / Framewrk / FWPart / FWLnkIte.cpp < prev    next >
Encoding:
Text File  |  1996-09-17  |  4.0 KB  |  123 lines  |  [TEXT/MPS ]

  1. //========================================================================================
  2. //
  3. //    File:                FWLnkIte.cpp
  4. //    Release Version:    $ ODF 2 $
  5. //
  6. //    Copyright:            (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
  7. //
  8. //========================================================================================
  9.  
  10. #include "FWFrameW.hpp"
  11.  
  12. #ifndef FWLNKITE_H
  13. #include "FWLnkIte.h"
  14. #endif
  15.  
  16. //========================================================================================
  17. //    Runtime information
  18. //========================================================================================
  19.  
  20. #ifdef FW_BUILD_MAC
  21. #pragma segment odflinking
  22. #endif
  23.  
  24. //========================================================================================
  25. //    class FW_CPartLinkSourceIterator
  26. //========================================================================================
  27.  
  28. FW_DEFINE_AUTO(FW_CPartLinkSourceIterator)
  29.  
  30. //========================================================================================
  31. //    class FW_CPartLinkDestIterator
  32. //========================================================================================
  33.  
  34. FW_DEFINE_AUTO(FW_CPartLinkDestIterator)
  35.  
  36. //========================================================================================
  37. //    class FW_CLinkMgrLinkSourceIterator
  38. //========================================================================================
  39.  
  40. FW_DEFINE_AUTO(FW_CLinkMgrLinkSourceIterator)
  41.  
  42. //========================================================================================
  43. //    class FW_CLinkMgrLinkDestIterator
  44. //========================================================================================
  45.  
  46. FW_DEFINE_AUTO(FW_CLinkMgrLinkDestIterator)
  47.  
  48. //========================================================================================
  49. //    class FW_CLinkIterator
  50. //========================================================================================
  51.  
  52. FW_DEFINE_AUTO(FW_CLinkIterator)
  53.  
  54. //---------------------------------------------------------------------------------------
  55. //    FW_CLinkIterator constructor
  56. //---------------------------------------------------------------------------------------
  57.  
  58. FW_CLinkIterator::FW_CLinkIterator(FW_CLinkManager* linkMgr)
  59. :    fFirstIterator(linkMgr),
  60.     fSecondIterator(linkMgr),
  61.     fCurrentLink(NULL),
  62.     fIteratingSecondList(false)
  63. {
  64.     // iterate link sources first, then link destinations
  65.     FW_END_CONSTRUCTOR
  66. }
  67.  
  68. //---------------------------------------------------------------------------------------
  69. //    FW_CLinkIterator destructor
  70. //---------------------------------------------------------------------------------------
  71.  
  72. FW_CLinkIterator::~FW_CLinkIterator()
  73. {
  74.     FW_START_DESTRUCTOR
  75. }
  76.  
  77. //---------------------------------------------------------------------------------------
  78. //    FW_CLinkIterator::FirstLink
  79. //---------------------------------------------------------------------------------------
  80. FW_CLink* FW_CLinkIterator::FirstLink()
  81. {
  82.     fCurrentLink = fFirstIterator.First();
  83.     if (fCurrentLink == NULL)
  84.     {
  85.         // no items in first list; switch to second list
  86.         fIteratingSecondList = true;
  87.         fCurrentLink = fSecondIterator.First();
  88.     }
  89.     return fCurrentLink;
  90. }
  91.  
  92. //---------------------------------------------------------------------------------------
  93. //    FW_CLinkIterator::IsNotComplete
  94. //---------------------------------------------------------------------------------------
  95. FW_Boolean FW_CLinkIterator::IsNotComplete()
  96. {
  97.     return fCurrentLink != NULL;
  98. }
  99.  
  100. //---------------------------------------------------------------------------------------
  101. //    FW_CLinkIterator::NextLink
  102. //---------------------------------------------------------------------------------------
  103. FW_CLink* FW_CLinkIterator::NextLink()
  104. {
  105.     if (fIteratingSecondList)
  106.     {
  107.         fCurrentLink = fSecondIterator.Next();
  108.     }
  109.     else    // iterating first list
  110.     {
  111.         fCurrentLink = fFirstIterator.Next();
  112.         if (fCurrentLink == NULL)
  113.         {
  114.             // no items left in first list; switch to second list
  115.             fIteratingSecondList = true;
  116.             fCurrentLink = fSecondIterator.First();
  117.         }
  118.     }
  119.     return fCurrentLink;
  120. }
  121.  
  122.  
  123.